Check if buffer is NULL after setting it to NULL, not before.
authorKrzesimir Nowak <qdlacz@gmail.com>
Fri, 12 Nov 2010 12:14:12 +0000 (13:14 +0100)
committerKrzesimir Nowak <qdlacz@gmail.com>
Fri, 28 Jan 2011 19:49:47 +0000 (20:49 +0100)
This catches cases when "notify::buffer" handler does not recreate
the buffer again, which could end in reference leak.

https://bugzilla.gnome.org/show_bug.cgi?id=634677

gtk/gtktextview.c

index 7d3d639c3c2aba4a98da372634a32c4fdfe6da72..e0f42ec2ee3e912949d64ab348cdc9d2dc128752 100644 (file)
@@ -3031,10 +3031,11 @@ gtk_text_view_finalize (GObject *object)
   text_view = GTK_TEXT_VIEW (object);
   priv = text_view->priv;
 
-  g_assert (priv->buffer == NULL);
-
   gtk_text_view_destroy_layout (text_view);
   gtk_text_view_set_buffer (text_view, NULL);
+
+  /* at this point, no "notify::buffer" handler should recreate the buffer. */
+  g_assert (priv->buffer == NULL);
   
   cancel_pending_scroll (text_view);